<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>
   辅助函数 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档
  </title>
  <link rel="shortcut icon" href="/user_guide/../images/design/favicon.ico" type="image/x-icon" />
  <link rel="stylesheet" type="text/css" media="all" href="/user_guide/userguide.css" />
  <link rel="search" href="/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索" />
  <link rel="canonical" href="/user_guide/general/helpers.html" />
  <script type="text/javascript" src="/user_guide/nav/nav.js">
  </script>
  <script type="text/javascript" src="/user_guide/nav/prototype.lite.js">
  </script>
  <script type="text/javascript" src="/user_guide/nav/moo.fx.js">
  </script>
  <script type="text/javascript" src="/user_guide/nav/user_guide_menu.js">
  </script>
  <meta name="robots" content="all" />
  <meta name="author" content="ExpressionEngine Dev Team" />
  <meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
 </head>
 <body>
  <!-- START NAVIGATION -->
  <div id="nav">
   <div id="nav_inner">
    <script type="text/javascript">
     create_menu('/user_guide/');
    </script>
   </div>
  </div>
  <script type="text/javascript">
   _setNavigation();
  </script>
  <div id="nav2">
   <a name="top">
   </a>
   <a href="javascript:void(0);" onclick="myHeight.toggle();">
    <img src="/user_guide/images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" />
   </a>
  </div>
  <div id="masthead">
   <table cellpadding="0" cellspacing="0" border="0" style="width:100%">
    <tr>
     <td width="350">
      <h1>
       CodeIgniter 用户指南 版本 2.0.0
      </h1>
     </td>
     
     <td id="breadcrumb_right">
      <a href="/user_guide/toc.html">
       目录页
      </a>
     </td>
    </tr>
   </table>
  </div>
  <!-- END NAVIGATION -->
  <!-- START BREADCRUMB -->
  <table cellpadding="0" cellspacing="0" border="0" style="width:100%">
   <tr>
    <td id="breadcrumb">
     <a href="/" target="_blank">
      CodeIgniter 中国首页
     </a>
     &nbsp;&#8250;&nbsp;
     <a href="/user_guide/toc.html">用户指南目录</a>
     &nbsp;&#8250;&nbsp;辅助函数
    </td>
    <td id="searchbox">
     <form method="get" action="http://www.google.com/search" target="google_window">
      <input type="hidden" name="client" value="pub-0176846097796333" />
      <input type="hidden" name="forid" value="1" />
      <input type="hidden" name="ie" value="UTF-8" />
      <input type="hidden" name="oe" value="UTF-8" />
      <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
      搜索用户指南&nbsp;
      <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
      &nbsp;
      <input type="submit" class="submit" name="sa" value="Go" />
     </form>
    </td>
   </tr>
  </table>
  <!-- END BREADCRUMB -->
  <div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
   <a href="http://codeigniter.com/user_guide/general/helpers.html" target="_blank">
    查看原文
   </a>
  </div>
  <!--<br clear="all"  />-->
  <!-- START CONTENT -->
  <div id="content">
   <h1>
    辅助函数
   </h1>
   <p>
    辅助函数，顾名思义，是帮助我们完成特定任务的函数。每个辅助函数文件仅仅是一些函数的集合。例如，
    <dfn>
     URL Helpers
    </dfn>
    可以帮助我们创建链接，
    <dfn>
     Form Helpers
    </dfn>
    可以帮助我们创建表单，
    <dfn>
     Text Helpers
    </dfn>
    提供一系列的格式化输出方式，
    <dfn>
     Cookie Helpers
    </dfn>
    能帮助我们设置和读取COOKIE，
    <dfn>
     File Helpers
    </dfn>
    能帮助我们处理文件，等等。
   </p>
   <p>
    跟其他部分不同的是，辅助函数不是用类的方式来实现的。它们仅仅是一些简单的过程处理函数。
每个辅助函数处理一个特定的任务，并且不必依靠其他函数。
   </p>
   <p>
    CodeIgniter 默认是没有载入辅助函数文件的，所以如果你想用辅助函数，就必须先载入它。
一旦被载入，辅助函数将全局可用(globally available)，你可以在
    <a href="../general/controllers.html">
     controller
    </a>
    和
    <a href="../general/views.html">
     views
    </a>
    中使用它们。
   </p>
   <p>
    辅助函数文件一般保存在
    <dfn>
     system/helpers
    </dfn>
    或
    <dfn>
     application/helpers
    </dfn>
    文件夹中。CodeIgniter 将会先在
    <dfn>
     application/helpers
    </dfn>
    寻找对应的辅助函数文件，
如果目录不存在或者目录下没有对应的辅助函数文件，CI 才会载入
    <dfn>
     system/helpers
    </dfn>
    下的辅助函数文件。
   </p>
   <h2>
    载入辅助函数
   </h2>
   <p>
    载入辅助函数是非常简单的:
   </p>
   <code>
    $this-&gt;load-&gt;helper('
    <var>
     name
    </var>
    ');
   </code>
   <p>
    <var>
     name
    </var>
    是辅助函数文件的名字(不带.php后缀 和"helper" 部分)。
   </p>
   <p>
    例如，要载入文件名为
    <var>
     url_helper.php
    </var>
    的
    <dfn>
     URL Helper
    </dfn>
    ，你将会用到下面的语句：
   </p>
   <code>
    $this-&gt;load-&gt;helper('
    <var>
     url
    </var>
    ');
   </code>
   <p>
    辅助函数可以在你的控制器(controller)的任何地方被载入，甚至可以在视图(View)文件中被载入(我们并不建议你这么做)。
请在使用辅助函数之前载入他们。你可以在你的控制器构造函数中载入它们，以便辅助函数能自动在其他函数之前被载入。你也可以在要用到辅助函数的地方当场载入。
   </p>
   <p class="important">
    注意: 辅助函数载入函数并不返回值，所以不要尝试将它付给一个变量，直接像这样用就可以了。
   </p>
   <h2>
    载入多个辅助函数
   </h2>
   <p>
    如果你想一次载入多个辅助函数，你可以这样做:
   </p>
   <code>
    $this-&gt;load-&gt;helper(
    <samp>
     array(
    </samp>
    '
    <var>
     helper1
    </var>
    ', '
    <var>
     helper2
    </var>
    ', '
    <var>
     helper3
    </var>
    '
    <samp>
     )
    </samp>
    );
   </code>
   <h2>
    自动载入辅助函数
   </h2>
   <p>
    如果你想要的话，CodeIgniter可以自动为你载入辅助函数。你可以通过打开
    <var>
     application/config/autoload.php
    </var>
    ，并往自动载入数组(autoload array)中增加辅助函数来实现。
   </p>
   <h2>
    使用辅助函数
   </h2>
   <p>
    一旦你载入了想要用到辅助函数文件，你就可以用标准的函数调用方法来使用里面的函数。
   </p>
   <p>
    例如，要使用
    <dfn>
     anchor()
    </dfn>
    函数来建立一个链接，在视图(View)文件里面你可以这样做:
   </p>
   <code>
    &lt;?php echo anchor('blog/comments', 'Click Here');?&gt;
   </code>
   <p>
    "Click Here" 是链接的名字，"blog/comments" 是链接的URI。
   </p>
   <h2>
    "扩展" Helpers
   </h2>
   <p>
    你如果想 "扩展"一个原有的 Helpers,，可以在你的
    <dfn>
     application/helpers/
    </dfn>
    目录下创建一个新的helper，新的helper的名字是在被“扩展”的Helper的名字开头多加一个
    <kbd>
     MY_
    </kbd>
    (这是可以配置的.  见下.).
   </p>
   <p>
    如果你想做的只是在原有的helper中添加一些新的功能，比如，添加一两个新的方法，或者是修改一个方法；就不值得重写自己的helper。在这种情况下，最好是“扩展”已有的helper。“扩展”一词用在这里不是很恰当，因为Helper的方法是procedural 和 discrete的，在传统的语言环境中无法被“扩展”，不过在CodeIgniter中，你可以添加或修改helper的方法。
   </p>
   <p>
    例如，扩展一个本地已有的
    <kbd>
     Array Helper
    </kbd>
    你应该建立一个文件：
    <dfn>
     application/helpers/
    </dfn>
    <kbd>
     MY_array_helper.php
    </kbd>
    , 并添加或重写（override）其中的一些方法:
   </p>
   <code>
    // any_in_array() is not in the Array Helper, so it defines a new function
    <br />
    function any_in_array($needle, $haystack)
    <br />
    &#123;
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;$needle = (is_array($needle)) ? $needle : array($needle);
    <br />
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;foreach ($needle as $item)
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&#123;
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (in_array($item, $haystack))
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
    <br />
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;return FALSE;
    <br />
    &#125;
    <br />
    <br />
    // random_element() is included in Array Helper, so it overrides the native function
    <br />
    function random_element($array)
    <br />
    &#123;
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;shuffle($array);
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;return array_pop($array);
    <br />
    &#125;
    <br />
   </code>
   <h3>
    设定你自己的前缀（Prefix）
   </h3>
   <p>
    用于"扩展" helper 而加上前缀的文件同样也是对库和核心类的扩展.为了设置你自定义的前缀,请打开
    <dfn>
     application/config/config.php
    </dfn>
    文件,然后找到如下的条目:
   </p>
   <code>
    $config['subclass_prefix'] = 'MY_';
   </code>
   <p>
    请注意：由于所有CodeIgniter自带的库都被冠以
    <kbd>
     CI_
    </kbd>
    这样的前缀命名,所以请不要使用
    <kbd>
     CI_
    </kbd>
    来自定义前缀.
   </p>
   <h2>
    现在可以做什么?
   </h2>
   <p>
    在
    <a href="../toc.html">
     目录
    </a>
    里面有所有辅助函数的列表，你可以打开每个文件看看他们都能做些什么。
   </p>
   <p>
    不过目前还没有想到更好的方法让我们如何记住这些辅助函数！要不编辑个快速查询手册？？如果你有更好的方法请告诉我！
   </p>
   <p>
    &nbsp;
   </p>
   <div id="Contributors">
    翻译贡献者:
architectcom, borisauschina, Hex, lishen2, longbill, ripen, sheshi37c, shishirui, Xwoder
   </div>
   <div id="DocDate">
    最后修改: 2011-09-16 22:34:58
   </div>
  </div>
  <!-- END CONTENT -->
  <div id="footer">
   <p>
    上一个主题:&nbsp;&nbsp;
    <a href="/user_guide/general/models.html">
     模型
    </a>
    &nbsp;&nbsp;&middot;&nbsp;&nbsp;
    <a href="#top">
     页首
    </a>
    &nbsp;&middot;&nbsp;&nbsp;
    <a href="/user_guide/toc.html">用户指南目录</a>
    &nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;
    <a href="/user_guide/general/libraries.html">
     使用类库
    </a>
   </p>
   <p>
    <a href="http://codeigniter.com">
     CodeIgniter
    </a>
    &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2011 &nbsp;&middot;&nbsp;
    <a href="http://ellislab.com/">
     Ellislab, Inc.
    </a>
   </p>
   <p>
    中文化:
    <a href="">
     CodeIgniter 中国
    </a>
    &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.20 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼
   </p>
  </div>
  
  <div style="display:none">
   
   <noscript>
    <a href="http://www.51.la/?3289908" target="_blank">
     <img alt="我要啦免费统计" src="http://img.users.51.la/3289908.asp" style="border:none" />
    </a>
   </noscript>
  </div>
 </body>
</html>